#include "E3.h"

/*********************************************************************************************
函数名:    e3_init
入口参数:  address:该芯片的i2c起始地址
出口参数： 无
返回值：   初始化后的i2c地址结构体，如果初始化成功则结构体中的flag为1
作者：     XQii
日期:      2023/4/24
调用描述:  初始化E3子板中的GD32F330F6P6TR芯片
**********************************************************************************************/
i2c_addr_def e3_init(uint8_t address)
{
    i2c_addr_def result;
    uint8_t i;
    for (i = 0; i < 4; ++i)
    {
        result = get_board_address(address + 2 * i);
        if (result.flag == 1)
        {
            break;
        }
    }
    return result;
}


/*********************************************************************************************
函数名:    e3_all_init
入口参数:  e3_address:指向所有E3子板的指针  e3_addr:E3子板的GD32F330F6P6TR芯片基地址
出口参数： 无
返回值：   无
作者：     XQii
日期:      2023/4/24
调用描述:  初始化所有E3子板
**********************************************************************************************/
void e3_all_init(e3_addr_ref *e3_address, uint8_t e3_addr)
{
    uint8_t i;
    for (i = 0; i < 4; ++i)
    {
        e3_address->curtain_addr[i] = get_board_address(e3_addr + 2 * i);
    }
}


/*********************************************************************************************
函数名:    e3_set_position
入口参数:  periph:I2C外设  slave_address:I2C从机地址  pos:打开位置
出口参数： 无
返回值：   无
作者：     XQii
日期:      2023/4/24
调用描述:  将E3子板中的窗帘机打开到指定位置
**********************************************************************************************/
void e3_set_position(uint32_t periph, uint8_t slave_address, uint8_t pos)
{
    i2c_delay_byte_write(periph, slave_address, HR8833MTE_ADDRESS_E3, pos);
}